X-Git-Url: http://git.cyclocoop.org//%22http:/%22.attribut_html%28%24lesurls%5B%24numero%5D%29.%22/%22?a=blobdiff_plain;f=includes%2Fdiff%2FDifferenceEngine.php;h=4a6ac8e349e37c0f306850497cf488e85faabd97;hb=3e9d53bfadb9f277ba488422479c28d3444a99fd;hp=89d2389e855e4450e38577dae2d97a9158e3d133;hpb=420fb1e86d9be553a1a39a4b11f0ea4f42ba04f2;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/diff/DifferenceEngine.php b/includes/diff/DifferenceEngine.php index 89d2389e85..4a6ac8e349 100644 --- a/includes/diff/DifferenceEngine.php +++ b/includes/diff/DifferenceEngine.php @@ -238,12 +238,14 @@ class DifferenceEngine extends ContextSource { } public function showDiffPage( $diffOnly = false ) { - # Allow frames except in certain special cases $out = $this->getOutput(); $out->allowClickjacking(); $out->setRobotPolicy( 'noindex,nofollow' ); + // Allow extensions to add any extra output here + Hooks::run( 'DifferenceEngineShowDiffPage', [ $out ] ); + if ( !$this->loadRevisionData() ) { $this->showMissingRevision(); @@ -285,6 +287,8 @@ class DifferenceEngine extends ContextSource { $out->setPageTitle( $this->msg( 'difference-title', $this->mNewPage->getPrefixedText() ) ); $samePage = true; $oldHeader = ''; + // Allow extensions to change the $oldHeader variable + Hooks::run( 'DifferenceEngineOldHeaderNoOldRev', [ &$oldHeader ] ); } else { Hooks::run( 'DiffViewHeader', [ $this, $this->mOldRev, $this->mNewRev ] ); @@ -354,6 +358,10 @@ class DifferenceEngine extends ContextSource { '
' . $oldChangeTags[0] . '
' . '
' . $prevlink . '
'; + // Allow extensions to change the $oldHeader variable + Hooks::run( 'DifferenceEngineOldHeader', [ $this, &$oldHeader, $prevlink, $oldminor, + $diffOnly, $ldel, $this->unhide ] ); + if ( $this->mOldRev->isDeleted( Revision::DELETED_TEXT ) ) { $deleted = true; // old revisions text is hidden if ( $this->mOldRev->isDeleted( Revision::DELETED_RESTRICTED ) ) { @@ -415,6 +423,10 @@ class DifferenceEngine extends ContextSource { '
' . $newChangeTags[0] . '
' . '
' . $nextlink . $this->markPatrolledLink() . '
'; + // Allow extensions to change the $newHeader variable + Hooks::run( 'DifferenceEngineNewHeader', [ $this, &$newHeader, $formattedRevisionTools, + $nextlink, $rollback, $newminor, $diffOnly, $rdel, $this->unhide ] ); + if ( $this->mNewRev->isDeleted( Revision::DELETED_TEXT ) ) { $deleted = true; // new revisions text is hidden if ( $this->mNewRev->isDeleted( Revision::DELETED_RESTRICTED ) ) { @@ -487,6 +499,9 @@ class DifferenceEngine extends ContextSource { 'token' => $linkInfo['token'], ] ) . ']'; + // Allow extensions to change the markpatrolled link + Hooks::run( 'DifferenceEngineMarkPatrolledLink', [ $this, + &$this->mMarkPatrolledLink, $linkInfo['rcid'], $linkInfo['token'] ] ); } } return $this->mMarkPatrolledLink; @@ -530,6 +545,13 @@ class DifferenceEngine extends ContextSource { // If the user could patrol this it already would be patrolled $rcid = 0; } + + // Allow extensions to possibly change the rcid here + // For example the rcid might be set to zero due to the user + // being the same as the performer of the change but an extension + // might still want to show it under certain conditions + Hooks::run( 'DifferenceEngineMarkPatrolledRCID', [ &$rcid, $this, $change, $user ] ); + // Build the link if ( $rcid ) { $this->getOutput()->preventClickjacking(); @@ -618,15 +640,20 @@ class DifferenceEngine extends ContextSource { # WikiPage::getParserOutput() should not return false, but just in case if ( $parserOutput ) { - $out->addParserOutput( $parserOutput ); + // Allow extensions to change parser output here + if ( Hooks::run( 'DifferenceEngineRenderRevisionAddParserOutput', [ $this, $out, $parserOutput, $wikiPage ] ) ) { + $out->addParserOutput( $parserOutput ); + } } } } # @codingStandardsIgnoreEnd - # Add redundant patrol link on bottom... - $out->addHTML( $this->markPatrolledLink() ); - + // Allow extensions to optionally not show the final patrolled link + if ( Hooks::run( 'DifferenceEngineRenderRevisionShowFinalPatrolLink' ) ) { + # Add redundant patrol link on bottom... + $out->addHTML( $this->markPatrolledLink() ); + } } protected function getParserOutput( WikiPage $page, Revision $rev ) { @@ -652,6 +679,9 @@ class DifferenceEngine extends ContextSource { * @return bool */ public function showDiff( $otitle, $ntitle, $notice = '' ) { + // Allow extensions to affect the output here + Hooks::run( 'DifferenceEngineShowDiff', [ $this ] ); + $diff = $this->getDiff( $otitle, $ntitle, $notice ); if ( $diff === false ) { $this->showMissingRevision(); @@ -721,7 +751,9 @@ class DifferenceEngine extends ContextSource { if ( $this->mOldRev === false || ( $this->mOldRev && $this->mNewRev && $this->mOldRev->getId() == $this->mNewRev->getId() ) ) { - return ''; + if ( Hooks::run( 'DifferenceEngineShowEmptyOldContent', [ $this ] ) ) { + return ''; + } } // Cacheable? $key = false;